home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 July / EnigmA AMIGA RUN 20 (1997)(G.R. Edizioni)(IT)[!][issue 1997-07 & 08][EAR-CD IV].iso / lightwave / lwmlist / 95.lightwave-10 / 001707_owner-lightwav…mail.webcom.com_Tue Oct 31 13:42:11 1995.msg < prev    next >
Internet Message Format  |  1995-11-07  |  5KB

  1. Received: by mail.webcom.com
  2.     (1.37.109.15/16.2) id AA152845731; Tue, 31 Oct 1995 13:42:11 -0800
  3. Return-Path: <owner-lightwave@mail.webcom.com>
  4. Received: from netcom7.netcom.com by mail.webcom.com with ESMTP
  5.     (1.37.109.15/16.2) id AA152785725; Tue, 31 Oct 1995 13:42:05 -0800
  6. Received: by netcom7.netcom.com (8.6.12/Netcom)
  7.     id NAA13686; Tue, 31 Oct 1995 13:32:17 -0800
  8. From: bhood@netcom.com (robert hood)
  9. Message-Id: <199510312132.NAA13686@netcom7.netcom.com>
  10. Subject: It should come as no surprise...
  11. To: lightwave@mail.webcom.com
  12. Date: Tue, 31 Oct 1995 13:32:16 -0800 (PST)
  13. Cc: lwplugin-l@netcom.com
  14. X-Mailer: ELM [version 2.4 PL23]
  15. Mime-Version: 1.0
  16. Content-Type: text/plain; charset=US-ASCII
  17. Content-Transfer-Encoding: 7bit
  18. Content-Length: 3963      
  19. Sender: owner-lightwave@mail.webcom.com
  20. Precedence: bulk
  21.  
  22. I've had a couple of people ask me about BML scripting for Layout.  One of
  23. the main difference between Modeler and Layout as far as plugins are concerned
  24. is the diversity of plugin types supported by Layout.  While Modeler sports
  25. what is essentially a single type of plugin (even a CommandsSequence plugin
  26. can execute MeshDataEdit functions), Layout plays host to a number of truly
  27. different plugins, each having its own data types and functionality.  Because
  28. of this, a scripting plugin for Layout would have to actually be a number
  29. of *different* plugins, each designed to support the specialized data and
  30. functions intrinsic to a Layout plugin type.
  31.  
  32. Well, I got bored Sunday afternoon, and decided to try porting BML over
  33. to Layout.  I stripped out all the Modeler functionality (with certain
  34. exceptions, like File Requester and Monitor functions), and from a clean
  35. interpreter, built an Image Filter plugin for Layout.  The Image Filter
  36. mechanism seemed to be the simplist of those available for Layout, so it
  37. seemed like a the best plugin type for a quick test.
  38.  
  39. Here, then, is a BML/IF script, derived from the "hard" plugin of the
  40. same name, that will post-process a rendered image into its negative.  (As
  41. with all scripts I make public, this actually works -- needless to say,
  42. I was quite pleased when it did =|^).
  43.  
  44. So, for those of you who've asked me, I guess the answer would be
  45. "yes, it is possible." =|^)
  46.  
  47. ---------------------------------------------------------------------------
  48. // BML/IF:  Negative
  49. //
  50. // if a function is not declared, BML/IF will default its behavior.  The
  51. // available Image Filter functions are:
  52. //
  53. //           process      flags
  54. //
  55. // the plugin interface functions 'create', 'destroy', 'load', 'save', and
  56. // 'copy' are not currently functional, but they do not need to be for this
  57. // particular plugin to work.
  58. //
  59. // NOTE: whether the flags() function is defined or not, the plugin
  60. // automatically has access to the RED, GREEN, BLUE, and ALPHA buffers.
  61.  
  62. // every process() declaration must accept five arguments
  63. // ('end' is a keyword in BML/IF, so we use 'endtime')
  64.  
  65. process: width, height, frame, starttime, endtime
  66. {
  67.     var red[width];
  68.     var green[width];
  69.     var blue[width];
  70.     var alpha[width];
  71.     var out[3];
  72.     var i,j;
  73.  
  74.     moninit(height);
  75.  
  76.     for(i = 0;i < height;++i)
  77.     {
  78.         red = bufferline(RED,i);
  79.         green = bufferline(GREEN,i);
  80.         blue = bufferline(BLUE,i);
  81.         alpha = bufferline(ALPHA,i);
  82.  
  83.         for(j = 0;j < width;++j)
  84.         {
  85.             out[1] = 255 - red[j + 1];
  86.             out[2] = 255 - green[j + 1];
  87.             out[3] = 255 - blue[j + 1];
  88.  
  89.             setrgb(j,i,out);
  90.             setalpha(j,i,alpha[j + 1]);
  91.         }
  92.  
  93.         if(monstep())
  94.             return;
  95.     }
  96.  
  97.     monend();
  98. }
  99.  
  100. // we don't really need this function for this plugin,
  101. // but it is here for illustration
  102.  
  103. flags
  104. {
  105.     // available buffers are:
  106.     // SPECIAL      LUMINOUS        DIFFUSE
  107.     // MIRROR       TRANS           RAWRED
  108.     // RAWGREEN     RAWBLUE         SHADING
  109.     // SHADOW       GEOMETRY        DEPTH
  110.     // (RED)        (GREEN)         (BLUE)      (ALPHA)
  111.  
  112.     return(RED,GREEN,BLUE,ALPHA);   // select the defaults just for fun  =|^)
  113. }
  114. ---------------------------------------------------------------------------
  115.  
  116. Render me gone,               |||
  117. Bob                         ^(===)^
  118. -------------------------oOO--(_)--OOo--------------------------------------
  119. Bob Hood            | All governments suffer from a recurring problem:
  120.                     | Power attracts pathological personalities.  It is not
  121. Work: 303-730-1324  | that power corrupts, but that it is magnetic to the
  122. Home: 303-980-8392  | corruptible.  Such people have a tendency to become
  123. bhood@netcom.com    | drunk on violence, a condition to which they are
  124. hood@cqgrd.com      | quickly addicted              - Frank Herbert
  125. ----------------------------------------------------------------------------
  126. --
  127. bhood@netcom.com (robert hood) sent this message.
  128. To Post a Message           : lightwave@webcom.com
  129. Un/Subscription Requests To : lightwave-request@webcom.com
  130. (DIGEST)                 or : lightwave-digest-request@webcom.com
  131. Administrative Items To     : owner-lightwave@webcom.com